package org.atguigu.mapper;

import org.apache.ibatis.annotations.Param;
import org.atguigu.entity.Student;

import java.util.List;

/*
StudentMapper中的抽象方法名，和Student Mapper.xml中的sqlId名要一模一样
 */
public interface StudentMapper {
    //根据id查询单条记录
    Student getById(String id);
    List<Student> getAll();
    void insert(Student s);
    void update(Student s);
    void delete(String id);
    List<Student> getByName(String name);
    /*
    为sql传参
    传递n个参
    如果来自一张表通过实体类对象直接封装即可
    列如传递name和age，将name和age封装到Student s 中，传递s即可

    如果来自2张表
    student classes
    解决方案1
    class StudentAndClasses{
    参数1
    参数2
    }
    解决方案2
    Map集合
    put 参数1 参数2

    以上解决方案都可行
    但是也都是同一个内核，就是将n多个参数，还是变成一个参数进行传递
    mybatis 对于sql n多个参数的传递问题，是有解决方案的

     <select id="getByNameAndAge" resultType="Student">
        select * from t_student where name like '%' #{name} '%' and age=#{age}
    </select>

     */
    List<Student> getByNameAndAge(@Param("name") String name, @Param("age") int age);
    void deleteByIds(List<String> ids);
    void deleteByIds2(String[] ids);
    List<Student> getStudentByCondition(Student s);
    void update2(Student s);


}
